/**
 * 用户登录状态的相关封装
 */

import * as base from '@/common/sju.base.js'
import * as nav from '@/common/sju.nav.js'
import {
	noLogin
} from '@/config/config.js'
import {
	appInfo
} from '@/config/config.js'
import {
	shangHuUrl
} from '@/config/config.js'
/**
 * @description 判断访问的Page是否需要登录
 * 如果需要登录, 则判断是否已登录,未登录则跳转到登陆界面
 * @param {string} url 打开的页面
 */
function checkLogin(url) {
	// 保存不需要登录的页面,如果pageUrl不在数组中存在,则需要登录
	
	let needLogin = true //true
	let isShangHu = false //false
	for (let item of shangHuUrl) {
		if (item === url)
			isShangHu = true
	}
	url = url.split('?')[0]
	for (let item of noLogin) {
		if (item === url)
			needLogin = false
	}
	console.log(needLogin);
	// 如果需要登录,并且没有登录mobile标识,则跳转到登陆页面
	//判断是用户还是商户
	let mobile = "";
	if(isShangHu){
		mobile = getValue('xndz_mobile');
	}else{
		mobile = getValue('xndz_mobileShip');
	}
	if (needLogin && base.isNull(mobile)) {
		base.logInfo('需要登录:' + url)
		//微信小程序,提供登录提醒
		//#ifdef MP-WEIXIN
		weixinLogin()
		//#endif
	
		//其它平台,直接跳转登录
		//#ifdef APP-PLUS || H5
		nav.redirectTo('/intake/login')
	
		//#endif
	
	} else {
		return true
	}

	return false
}

/**
 * @description 微信小程序获取openID
 * @param {string} nickName 微信用户名称
 * @param {string} avatarUrl 用户用户头像
 */
function weixinLogin() {
	uni.login({
		provider: 'weixin',
		scopes: 'auth_user',
		success: function(loginRes) {
			// 获取临时code
			let code = loginRes.code
			request('/api/weixin/loginUser/' + appInfo.appId, 'post', {
				code: code
			}, true).then(res => {
				// 把后台返回的openID保存到本地存储
				login.saveValue('openID', res.data.openID)
				// 保存token
				login.saveValue('token', res.data.token)
			})
		}
	})
}

/**
 * @description 本地存储 
 * @param {string} key 保存变量的标识
 * @param {any} value 保存的值 
 */
function saveValue(key, value) {
	uni.setStorageSync(key, value)
}

/**
 * @description 从本地存储获取key数据
 * @param {string} key 保存变量的标识
 */
function getValue(key) {
	let value = uni.getStorageSync(key)
	return value
}

/**
 * @description 从本地存储清除某个key 
 * @param {string} key 保存变量的标识
 */
function clearKey(key) {
	uni.removeStorageSync(key)
}

/**
 * @description 从本地存储清除所有数据 
 * @param {string} key 保存变量的标识
 */
function clearAll() {
	uni.clearStorageSync()
}

export {
	checkLogin,
	weixinLogin,
	saveValue,
	getValue,
	clearKey,
	clearAll
}